#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：HiflyVideoAPI_Test 
@File    ：utils_file.py
@Author  ：beibei
@Date    ：7/15/25 11:00 AM 
'''
import json
from pathlib import Path

import json
import os
from pathlib import Path

def get_project_root() -> Path:
    """
    获取项目根目录：
    - 优先读取环境变量 PROJECT_ROOT
    - 向上查找包含 requirements.txt + common/ 或 testCase/ 的目录
    """
    env_root = os.environ.get("PROJECT_ROOT")
    if env_root and Path(env_root).exists():
        return Path(env_root)

    current = Path(__file__).resolve()
    for parent in current.parents:
        if (parent / "requirements.txt").exists() and (
            (parent / "common").is_dir() or (parent / "testCase").is_dir()
        ):
            return parent

    raise RuntimeError("❌ 未找到项目根目录，请检查目录结构或设置 PROJECT_ROOT")


def load_json_from_project(relative_path: str) -> dict:
    """
    从项目根目录中读取指定相对路径的 JSON 文件
    :param relative_path: 相对于项目根的 JSON 路径
    :return: dict
    """
    root = get_project_root()
    json_path = root / Path(relative_path)
    if not json_path.exists():
        raise FileNotFoundError(f"找不到 JSON 文件: {json_path}")
    with open(json_path, "r", encoding="utf-8") as f:
        return json.load(f)


def get_file_path(relative_path: str) -> Path:
    """
    获取项目中某个文件的完整路径（并检查存在性）
    :param relative_path: 相对于项目根的文件路径
    :return: Path 对象
    """
    root = get_project_root()
    file_path = root / Path(relative_path)
    if not file_path.exists():
        raise FileNotFoundError(f"找不到文件: {file_path}")
    return file_path
